Magnetic disk storage is currently the most widely used method of mass storage for computer systems. Traditionally, systems using this method of mass storage have included a single disk capable of storing large amounts of data. However, systems using an array of smaller capacity, less expensive disk drives are currently emerging as a low cost alternative to large single disk systems. These array systems are known as RAID (redundant array of inexpensive disks systems.
When used in conjunction with a host computer, a RAID system appears to behave just like a single disk system. RAID systems, however, offer many advantages over single disk systems. Among the advantages of RAID technology are improved reliability and performance. Reliability is improved through the use of redundancy information in the array which allows the system to continue operating even though one of the drives in the array has failed. The failed drive may then be replaced, and the lost data regenerated, without having to shut down the system. Conversely, if the one disk in a single disk system fails, the system is rendered inoperable and valuable data may be lost. RAID systems may achieve improvement in performance over single disk systems by, among other things, allowing data to be read from and written to multiple disks in the array in parallel. This greatly increases the speed with which I/O operations can be performed.
RAID technology encompasses a series of techniques for managing the operation of multiple disks. These techniques are discussed in an article entitled "A Case for Redundant Arrays of Inexpensive Disks (RAID)" by Patterson, Gibson, and Katz of the University of California (Report No. UCB/CSD 87/391, December 1987) which categorizes the different techniques into five RAID "levels" and is hereby incorporated by reference. Each RAID level represents a different approach to storing and retrieving data and the associated redundancy information across the array of disk drives.
FIG. 1 illustrates a typical RAID system 10. This system 10 may be used to implement any of the five RAID levels. As seen in the figure, the system 10 includes: a host computer 12, a disk array controller 14, and an array of disk drives 16. The host computer 12, in addition to other tasks, is operative for sending I/O commands to the disk array controller 14, instructing the controller 14 to perform certain read and/or write operations. The disk array controller 14 receives the commands from the host computer 12 and coordinates the transfer of data between the host computer 12 and the array of disk drives 16 in accordance with specific stored algorithms. The array of disk drives 16 includes a plurality of drives which are each independently coupled to and controlled by the disk array controller 14 for receiving, storing, and retrieving data delivered to it by the controller 14.
As described above, the disk array controller 14 includes stored algorithms which the controller 14 uses to coordinate the transfer of data between the host computer 12 and the array 16. The algorithms perform such tasks as determining and reserving an adequate amount of buffer space to perform a particular transfer, controlling the delivery of data between the buffer and the host computer 12, calculating the redundancy data to be stored in the disk array 16, distributing write data and redundancy data to the separate drives in the array 16, and retrieving data from the disk array 16. It should be apparent that the algorithm used to perform any particular transfer will depend on both the I/O function being requested and the RAID level being implemented.
In performing its function of coordinating the transfer of data between the host computer 12 and the array of disk drives 16, it is desirable that the disk array controller 14 operate as efficiently as possible. Improved efficiency of operation in the controller 14 will result in improved data transfer bandwidths between the host computer 12 and the array 16.